昨天我們學會了 git remote
,知道如何把本地專案和遠端倉庫連結。
但當你第一次嘗試 git push
時,可能會遇到這樣的訊息:
Permission denied (publickey).
fatal: Could not read from remote repository.
別慌,這正是 Git 在保護你的遠端專案不被陌生人亂動。
今天,我們就來學 Git 認證與 SSH key,讓推送不再被拒。
Git 本身只在本機運作,但如果你想和 GitHub、GitLab 等雲端倉庫同步,就需要認證。
遠端倉庫存放著你的程式碼與專案歷史,Git 需要確認 你是被信任的人 才允許推送或拉取。
認證方式主要有兩種:
git push
/git pull
都要輸入帳號密碼或 Personal Access Token (PAT)。簡單來說,有了 SSH key,你的 Git 推送就像有了門禁卡,不用每次輸入密碼就能安全進出 🛡️。
SSH key 是 Git 本地端和遠端倉庫的 安全認證方式:
想像一下:公鑰就像門鎖,私鑰就是鑰匙。只有對應的鑰匙能開門,保護你的專案安全。
在本機的終端機執行:
ssh-keygen
按 Enter 三次即可(存放路徑、密碼可留空),會產生兩個檔案
預設會在:
Windows:
C:\Users\user\.ssh\
裡面的 id_rsa
(私鑰) & id_rsa.pub
(公鑰)
macOS / Linux:
~/.ssh/
裡面的 id_rsa
(私鑰) & id_rsa.pub
(公鑰)
開啟檔案 id_rsa.pub
手動複製所有內容或使用指令複製
Windows:
type %userprofile%\.ssh\id_rsa.pub | clip
macOS:
pbcopy < ~/.ssh/id_rsa.pub
Linux:
cat ~/.ssh/id_rsa.pub | xclip -selection clipboard
#簡寫
xclip -sel clip < ~/.ssh/id_rsa.pub
ssh -T git@github.com
第一次會問 yes/no
,輸入 yes
,如果看到:
You've successfully authenticated...
就表示認證成功 🎉
如果遠端還是用 HTTPS,可以改成 SSH URL,避免每次輸入密碼:
git remote set-url origin git@github.com:yourname/project.git
一旦 SSH key 設定完成,你就可以放心地使用 git push
/ git pull
進行協作。
保護私鑰,不要上傳到雲端或分享給他人。
產生一組新的 SSH key,並貼到 GitHub 或 GitLab 帳號上。
用 SSH URL 連結遠端是否成功。
嘗試 git push -u origin main
,確認推送成功。
如果想練習 HTTPS,也可以嘗試 Personal Access Token 方式。
GitHub:Settings → Developer settings → Personal access tokens
git remote
,你的專案就能安全上雲端,開始團隊協作。